1. Field of the Invention
The invention is generally related to the field of Voice over Internet Protocol (VoIP) based communication systems, and more specifically to a method and apparatus for enabling VoIP calls to be initiated when a call server is unavailable.
2. Related Art
Voice over Internet Protocol (VoIP) generally refers to a technology in which voice signals are represented in digital form and transported over networks using Internet Protocol (IP). The digital data representing the voice signal may be generated by a terminal (e.g., phone or personal computer). Another terminal at the other end may receive the digital data, and generate the audio signal for a user at the other end.
A first terminal (“source terminal”) generally establishes a call with a second terminal (“target terminal”) prior to transferring digital data representing voice signal. Establishing a call generally entails sending data packets indicating interest to establish a session and exchanging necessary data so that the data packets related to the voice call can be reliably exchanged between the two terminals. Session Initiation Protocol (SIP) is one common protocol (others include Media Gateway Control Protocol (MGCP) and H.323, well known in the relevant arts) used for establishing such sessions for voice calls. For additional details on SIP, the reader is referred to a document entitled request for comments (RFC) 3261 available from the Internet Engineering Task Force (IETF).
Call servers are often used in establishing calls between terminals in VoIP environments. In general, call servers contain the access information (e.g., the IP address) of each (target) terminal that can be accessed by VoIP. Accordingly, each terminal which can operate as a target terminal may first register its access information with a designated call server (“registrar”).
Then, the source terminals may first send a call setup request (“Invite” packet in the case of SIP) to a local call server, which locates the registrar having the access information of a target terminal and forwards the call setup request to the registrar. The registrar then forwards the request to the target terminal (e.g., based on a telephone number or extension) and a sequence of handshakes may occur between the two terminals to establish the call.
Therefore, source terminals are often provided the access information (e.g., by appropriate configuration) of one or more (local or otherwise) call servers so that one of the call servers can be contacted during a call setup process. Thus, without access to a call server, many source terminals may be unable to initiate new calls.
One general requirement in VoIP environments is that the support for calls be continued even when a call server becomes unavailable (either because of outage of the underlying network or non-operation of the server). In other words, it is desirable that VoIP calls be facilitated (with as many VoIP related features as possible, which would otherwise be provided when primary call server is available) even in such a scenario.
In one prior approach, each source terminal is configured with information on multiple calls servers. Each source terminal may then contact one of the available call servers to initiate calls. A source terminal may determine the availability of each call server based on one of several known techniques (e.g., ping utility or receiving a response to packets sent during call establishment).
One possible problem with such an approach is that each source terminal may need to be configured with the access information of all the call servers. Another possible problem with such a solution is that each terminal may cause unneeded bandwidth overhead trying to determine whether each call server is accessible.
These problems/requirements may be of particular concern in branch office type environments which are often characterized by unreliable connectivity to main offices which may house call servers, and also by low budgets/infrastructure/low bandwidth connectivity/network personnel support. Due to such characteristics, a branch office may not have a local dedicated call server, and also not have a reliable connectivity to call servers located in main offices. Accordingly, the personnel in the branch office may not be able to initiate calls, even to terminals in the branch office when connectivity is lost to the main office.
In such environments also, it is desirable that personnel within a branch office be able to initiate calls.